<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // find() 方法返回通过函数内判断的数组的第一个元素的值。不会修改原数组
        // --------------原生方法-------------------------------------------
        var arr = [1, 1, 2, 3, 46, 5, 8];
        var res = arr.find(function (item, index, arr) {
            return item > 6
        })
        console.log(res);
        // --------------用for底层来写-------------------------------------------
        // var arr = [1,1,2,3,46,5,8];
        function maFind(arr, fn) {
            for (var i = 0; i < arr.length; i++) {

                var res = fn(arr[i], i, arr); // 布尔值

                if (res) return arr[i]  // return在函数内就不是跳出本次循环 而是结束函数
            }
        }
        var res = maFind(arr, function (item, index, arr) {
            return item > 6;   // 判断是否满足条件  布尔值
        })
        console.log(res);

        // -----------挂在到原型上------------------------------------------
        // var arr = [1,1,2,3,46,5,8];

        Array.prototype.maFind = function (cb) {  // cb 回调函数的意思
            for (var i = 0; i < this.length; i++) {

                var res = cb(this[i], i, this); // 布尔值
                
                if (res) return this[i]  // return在函数内就不是跳出本次循环 而是结束函数
            }
        }
        var res = arr.maFind(function (item, index, arr) {
            return item > 6;
        })
        console.log(res);
    </script>
</body>

</html>